.TH std::forward_list::remove,remove_if 3 "2024.06.10" "http://cppreference.com" "C++ Standard Libary"
.SH NAME
std::forward_list::remove,remove_if \- std::forward_list::remove,remove_if

.SH Synopsis
   void remove( const T& value );                   \fI(since C++11)\fP
                                                    \fI(until C++20)\fP
   size_type remove( const T& value );              \fI(since C++20)\fP
   template< class UnaryPredicate >         \fB(1)\fP                   \fI(since C++11)\fP
   void remove_if( UnaryPredicate p );          \fB(2)\fP               \fI(until C++20)\fP
   template< class UnaryPredicate >                               \fI(since C++20)\fP
   size_type remove_if( UnaryPredicate p );

   Removes all elements satisfying specific criteria. Invalidates only the iterators
   and references to the removed elements.

   1) Removes all elements that are equal to value (using operator==).
   2) Removes all elements for which predicate p returns true.

.SH Parameters

   value - value of the elements to remove
           unary predicate which returns true if the element should be removed.

           The expression p(v) must be convertible to bool for every argument v of type
   p     - (possibly const) T, regardless of value category, and must not modify v.
           Thus, a parameter type of T&is not allowed
           , nor is T unless for T a move is equivalent to a copy
           \fI(since C++11)\fP.
.SH Type requirements
   -
   UnaryPredicate must meet the requirements of Predicate.

.SH Return value

   \fI(none)\fP                          \fI(until C++20)\fP
   The number of elements removed. \fI(since C++20)\fP

.SH Complexity

   Given \\(\\scriptsize N\\)N as std::distance(begin(), end()):

   1) Exactly \\(\\scriptsize N\\)N comparisons using operator==.
   2) Exactly \\(\\scriptsize N\\)N applications of the predicate p.

.SH Notes

          Feature-test macro          Value    Std          Feature
   __cpp_lib_list_remove_return_type 201806L (C++20) Change the return type

.SH Example


// Run this code

 #include <forward_list>
 #include <iostream>

 int main()
 {
     std::forward_list<int> l = {1, 100, 2, 3, 10, 1, 11, -1, 12};

     auto count1 = l.remove(1);
     std::cout << count1 << " elements equal to 1 were removed\\n";

     auto count2 = l.remove_if([](int n){ return n > 10; });
     std::cout << count2 << " elements greater than 10 were removed\\n";

     std::cout << "Finally, the list contains: ";
     for (int n : l)
         std::cout << n << ' ';
     std::cout << '\\n';
 }

.SH Output:

 2 elements equal to 1 were removed
 3 elements greater than 10 were removed
 Finally, the list contains: 2 3 10 -1

.SH See also

   remove    removes elements satisfying specific criteria
   remove_if \fI(function template)\fP
